home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1994-03-12 | 5.2 KB | 188 lines |
- ' *************************************
- ' * *
- ' * Demo 10 V1.0 *
- ' * Written by Chris Hodges *
- ' * *
- ' *************************************
- '
- Hide
- Dim REGS(10)
- Global GOT$,LVO,RES,LIB$,LIB,FUNK,BASE,REGS()
- LVO=0
- CLEARALL
- OPENLIB["exec"]
- LIBCALL1["exec","FindTask",0]
- LIBCALL2["exec","SetTaskPri",RES,20]
- CLOSALL
- Unpack 9 To 0 : Screen Hide 0
- For Y=0 To 5
- For X=0 To 9
- Get Block X+Y*10+32,X*32,Y*32,32,32,0
- Next
- Next
- Unpack 6 To 0 : Screen Hide 0
- For Y=0 To 5
- For X=0 To 9
- Get Block X+Y*10+160,X*32,Y*32,32,32,0
- Next
- Next
- Screen Open 2,768,32,8,0
- Curs Off : Flash Off : Cls 0 : Get Palette 0
- Screen Display 2,128,73,320,32
- Unpack 7 To 0 : Screen Hide 0
- For Y=0 To 5
- For X=0 To 9
- Get Block X+Y*10+288,X*32,Y*32,32,32,0
- Next
- Next
- Screen Open 3,768,32,8,0
- Curs Off : Flash Off : Cls 0 : Get Palette 0
- Screen Display 3,128,110,320,32
- Screen Open 1,768,32,16,0
- Curs Off : Flash Off : Cls 0
- Screen Display 1,128,40,320,32
- For A=16 To 31 : Colour A,$FFF : Next
- For A=8 To 15 : Colour A,0 : Next
- For A=1 To 7 : Colour A,$1111-$222*A : Next
- Screen Open 4,16,16,16,0
- Flash Off : Screen Hide 4 : Get Palette 0
- Unpack 8 To 0
- Screen Display 0,128,150,320,158
- For A=16 To 31 : Colour A,$FFF : Next : Screen 1
- Dim S$(2),D(2,3)
- S$(0)="HALLO! HIER IST WIEDERMAL HOTSOFT h5MIT EINEM NEUEN INTRO! DREI "
- S$(0)=S$(0)+"SCROLLER MIT VERSCHIEDENEN GESCHWINDIGKEITEN VERMITTELN EINEN DREI "
- S$(0)=S$(0)+"DIMENSIONELLEN EINDRUCK! VIEL SPASS! "
- S$(1)=" LEIDER HAT DIESER ZEICHENSATZ KEINE SONDERZEICHEN NICHT MAL NUMMERN "
- S$(1)=S$(1)+"SCHADE EIGENTLICH WO MAN SO VIEL HAETTE SCHREIBEN KOENNEN "
- S$(2)=" GRUESSE AN ALLE MEINE FREUNDE, BESONDERS AN "
- S$(2)=S$(2)+"HENDRIK H. HEIMER, MICHAEL BERCHTOLD, MAD HENRY, MR. SNOOPY, JARO, "
- S$(2)=S$(2)+"HANS-PETER, RALF, WOLFGANG UND ANDREAS... "
- Autoback 0 : Bob Update Off
- Screen To Front 1 : Music 1 : Tempo 16
- Repeat
- For A=0 To 2
- Screen A+1
- If D(A,3)=0
- Add D(A,0),A*2+4 : Add D(A,1),A*2+4
- If D(A,1)>31
- Add D(A,1),-32
- If D(A,0)>367
- Add D(A,0),-368
- End If
- Gosub NL
- End If
- End If
- D(A,3)=Max(D(A,3)-1,0) : Screen Offset 1+A,D(A,0)+40+A*2,
- If Mouse Key=2 Then Inc D(A,3)
- Next
- Wait Vbl
- Until Mouse Key=1
- Amal Off : Sprite Off : Music Off
- Screen Close 0 : Screen Close 1 : Screen Close 2 : Screen Close 3 : Screen Close 4
- End
- NL:
- Add D(A,2),1,1 To Len(S$(A)) : B=Asc(Mid$(S$(A),D(A,2),1))
- If B=104 Then Inc D(A,2) : D(A,3)=Val(Mid$(S$(A),D(A,2),1))*20 : Goto NL
- Put Block B+A*128,368+D(A,0)-D(A,1),0
- Put Block B+A*128,D(A,0)-D(A,1),0
- Return
- Procedure LIBCALL1[N$,F$,R1]
- LIB$=N$ : LIBGET[F$]
- REGS(1)=R1
- LCALL
- End Proc
- Procedure LIBCALL2[N$,F$,R1,R2]
- LIB$=N$ : LIBGET[F$]
- REGS(1)=R1 : REGS(2)=R2
- LCALL
- End Proc
- Procedure LIBGET[FUNK$]
- ST=Start(15) : LIBS=Leek(ST)
- LIB$=LIB$-".library"+".library"
- FUNK$=Upper$(FUNK$)
- For A=1 To LIBS
- BIN[ST+Leek(ST+A*8-4)]
- If LIB$=GOT$ Then Exit
- Next
- If A=LIBS+1 Then Print "FEHLER: Library nicht in LibCall.Dat!" : End
- If Leek(ST+A*8)=0 Then Print "FEHLER: Library nicht offen!" : End
- LIB=A
- BASE=ST+Leek(ST+A*8-4)
- For A=1 To Deek(BASE+24)
- BIN[BASE-12+A*44-LVO*4]
- If Upper$(GOT$)=FUNK$ Then Exit
- Next
- If A=Deek(BASE+24)+1 Then Print "FEHLER: Funktion nicht gefunden!" : End
- FUNK=A
- End Proc
- Procedure LCALL
- For A=1 To 8
- R=Peek(BASE+17+A+FUNK*44)
- If R>0 Then Loke Start(14)+R*4-4,REGS(A)
- Next
- OFF=-Deek(BASE+16+FUNK*44)
- Loke Start(14)+60,Leek(Start(15)+LIB*8)+OFF
- Loke Start(14)+56,Leek(Start(15)+LIB*8)
- Call Start(14)+64
- RES=Leek(Start(14))
- End Proc
- Procedure OPENLIB[N$]
- If Length(15)=0
- Open In 1,"LibCall.dat" : L=Lof(1) : GOT$=Input$(1,8) : Close 1
- If Left$(GOT$,4)="PACK"
- Reserve As Work 15,Leek(Varptr(GOT$)+4)+8
- Bload "LibCall.Dat",15
- A= Extension_5_00E4(Start(15)+8,L-8)
- Copy Start(15)+8,Start(15)+Length(15)+8 To Start(15)
- Else
- Reserve As Data 15,L
- Bload "LibCall.dat",15
- End If
- End If
- ST=Start(15) : LIBS=Leek(ST)
- N$=N$-".library"+".library"
- For A=1 To LIBS
- BIN[ST+Leek(ST+A*8-4)]
- If N$=GOT$ Then Exit
- Next
- If A=LIBS+1 Then Print "FEHLER: Library nicht in LibCall.Dat!" : End
- If Leek(ST+A*8)<>0 Then Pop Proc
- If N$="exec.library" Then Loke ST+A*8,Leek(4) : Pop Proc
- Areg(1)=ST+Leek(ST+A*8-4)
- Dreg(0)=0
- Loke ST+A*8,Execall(-552)
- If Leek(ST+A*8)=0 Then Print "FEHLER: Library konnte nicht ge�ffnet werden!" : End
- End Proc
- Procedure CLEARALL
- If Length(15)=0 Then Pop Proc
- ST=Start(15)
- For A=1 To Leek(ST)
- Loke ST+A*8,0
- Next
- End Proc
- Procedure CLOSALL
- If Length(15)=0 Then Print "FEHLER: LibCall.Dat nicht geladen -> keine Library offen!"
- ST=Start(15) : LIBS=Leek(ST)
- For A=1 To LIBS
- BIN[ST+Leek(ST+A*8-4)]
- If(GOT$<>"exec.library") and(Leek(ST+A*8)<>0)
- Areg(1)=Leek(ST+A*8)
- AD=Execall(-414)
- Loke ST+A*8,0
- Else
- Loke ST+A*8,0
- End If
- Next
- End Proc
- Procedure GEREG[REGNUM]
- RES=Leek(Start(14)+REGNUM*4)
- End Proc
- Procedure BIN[AD]
- GOT$=""
- Do
- CO=Peek(AD) : Inc AD
- Exit If CO=0
- GOT$=GOT$+Chr$(CO)
- Loop
- End Proc